Digital pre-distortion (DPD) employs digital signal processing (DSP) techniques to impress an “inverse characteristic” of a Power Amplifier (PA) on an input signal to compensate for the non-linear distortion of the PA. Typically, the distortion function is modeled as a sum of output signals produced from (non-orthogonal) basis functions weighted by a corresponding set of complex-valued tap coefficients as in the generalized memory polynomial (GMP) framework.
Recent advanced transmitter architectures in wireless communication systems seek the capability to service signals in multiple bands concurrently as a means to lower cell site cost and complexity. Concurrent dual-band systems require DPD with much higher computational complexity since nonlinear behavior of concurrent dual-band PA's includes both intra-band and inter-band distortion products. For example, a concurrent dual-band GMP framework requires extension to two dimensions, leading to a significant increase in computational complexity required for 2D-DPD.
FIG. 1 shows a typical “concurrent dual-band” system 10 using baseband DPD implemented by a pre-distortion system 12. The pre-distortion system 12 receives complex-valued baseband information-bearing signals uL(n) and uU(n) for the lower and upper bands from a lower and upper band source 14a and 14b, respectively. The signals uL(n) and uU(n), are pre-distorted by a pair of digital pre-distorters 16a, and 16b, referred to collectively herein as digital pre-distorters 16, to produce the complex-valued baseband distorted signals yL(n) and yU(n). The signals from both bands, yL(n) and yU(n), are up-converted by an upconverter 18 to analog signal {tilde over (z)}i(t) at frequency ωc and input to a power amplifier (PA) 20 to produce the real-valued output signal {tilde over (z)}o(t) to be transmitted over the air. The system is considered “concurrent dual-band” since the PA transmits both bands simultaneously and treats them as a single contiguous region of frequency of width W—even if the spacing between bands spans several hundreds of MHz.
A transmit observation receiver 22 that includes a down converter and digitizer 24, down-converts and digitizes the analog PA output signal {tilde over (z)}o(t) as observed via a coupler. A “Tap Weight Evaluation” block 26 produces a set of tap weights, also referred to simply as taps, required for each band based on the baseband samples rL(n) and rU(n) observed on both bands by the observation receiver 22. Tap weight adaptation requires access to either the DPD actuator input signals uL(n) and uU(n) or its output signals yL(n) and yU(n), depending on whether the DPD system employs a “direct learning” or “indirect learning” architecture. Most often, only one of the learning architectures is selected for any given system based on the nature of its PA nonlinearity or its chosen adaptation scheme.
Equations 1 show a signal implementation of a typical baseband DPD architecture for a concurrent dual-band system. A subsystem of the pre-distorter system 12, includes a pair of pre-distorter actuators, one for each band that calculates the pre-distorted signals as follows:
                                                        y              L                        ⁡                          (              n              )                                =                                    ∑                              m                =                0                                            M                -                1                                      ⁢                                          ∑                                  b                  =                  0                                                  B                  -                  1                                            ⁢                                                                    w                    L                                    ⁡                                      (                                          m                      ,                      b                                        )                                                  ·                                                      ψ                                          L                      ,                      b                                                        ⁡                                      (                                                                                                                                                u                            L                                                    ⁡                                                      (                                                          n                              -                              m                                                        )                                                                                                                      ,                                                                                                                            u                            U                                                    ⁡                                                      (                                                          n                              -                              m                                                        )                                                                                                                                        )                                                  ·                                                      u                    L                                    ⁡                                      (                                          n                      -                      m                                        )                                                                                      ⁢                                  ⁢                                            y              U                        ⁡                          (              n              )                                =                                    ∑                              m                =                0                                            M                -                1                                      ⁢                                          ∑                                  b                  =                  0                                                  B                  -                  1                                            ⁢                                                                    w                    U                                    ⁡                                      (                                          m                      ,                      b                                        )                                                  ·                                                      ψ                                          U                      ,                      b                                                        ⁡                                      (                                                                                                                                                u                            L                                                    ⁡                                                      (                                                          n                              -                              m                                                        )                                                                                                                      ,                                                                                                                            u                            U                                                    ⁡                                                      (                                                          n                              -                              m                                                        )                                                                                                                                        )                                                  ·                                                      u                    U                                    ⁡                                      (                                          n                      -                      m                                        )                                                                                                          Equation        ⁢                                  ⁢        1            
The lower band actuator synthesizes its desired pre-distorted output yL(n) by summing together over a memory depth of M samples the outputs from B basis functions ψL,b(•) scaled by the lower band signal uL(n−m) and weighted by the complex-valued tap weights {wL(n−m,b)}. Similarly, the upper band actuator produces yU(n) similarly using B basis functions ψU,b(•) and tap weights {wU(n−m,b)}. For effective dual-band pre-distortion, the basis functions ψL,b(•) and ψU,b(•) must be smooth continuous functions of the signal envelopes |uL(n)| and |uU(n)| in each band capable of synthesizing nonlinear distortion products of sufficient order as produced by the PA to be linearized.
A commonly used scheme adopts a dual-band extension of the “Generalized Memory Polynomial” (GMP) scheme, referred to as “2D-DPD”. In this case, Equations 1 takes the form shown in Equations 2, where Q+1 represents the maximum order of the nonlinearity in question.
                                                        y              L                        ⁡                          (              n              )                                =                                    ∑                              m                =                0                                            M                -                1                                      ⁢                                          ∑                                  q                  =                  0                                Q                            ⁢                                                ∑                                      p                    =                    0                                    q                                ⁢                                                                            w                      L                                        ⁡                                          (                                              m                        ,                        q                        ,                        p                                            )                                                        ·                                                                                                                                    u                          L                                                ⁡                                                  (                                                      n                            -                            m                                                    )                                                                                                                                  q                      -                      p                                                        ·                                                                                                                                    u                          U                                                ⁡                                                  (                                                      n                            -                            m                                                    )                                                                                                            p                                    ·                                                            u                      L                                        ⁡                                          (                                              n                        -                        m                                            )                                                                                                          ⁢                                  ⁢                                            y              U                        ⁡                          (              n              )                                =                                    ∑                              m                =                0                                            M                -                1                                      ⁢                                          ∑                                  q                  =                  0                                Q                            ⁢                                                ∑                                      p                    =                    0                                    q                                ⁢                                                                            w                      U                                        ⁡                                          (                                              m                        ,                        q                        ,                        p                                            )                                                        ·                                                                                                                                    u                          U                                                ⁡                                                  (                                                      n                            -                            m                                                    )                                                                                                                                  q                      -                      p                                                        ·                                                                                                                                    u                          L                                                ⁡                                                  (                                                      n                            -                            m                                                    )                                                                                                            p                                    ·                                                            u                      U                                        ⁡                                          (                                              n                        -                        m                                            )                                                                                                                              Equation        ⁢                                  ⁢        2            
The use of classical polynomials as basis functions for pre-distortion (as in the GMP method) leads to a number of implementation difficulties. A low order polynomial cannot provide a good fit to a general non-linear response over the full dynamic range of the input signal. Computation of high order polynomial terms cannot be done accurately in fixed-point with limited precision. These limitations may be avoided in practice with the use of lower-order splines.
An illustrative example of spline-based DPD for the single-band case is shown in FIG. 2. The basic idea is to approximate the basis function ψ(|u(n−1)|) as a piecewise approximation of a low order polynomial in the form of a “Catmull-Rom” cubic spline. Typically, third order (or cubic) splines are used since they are easy to compute and have continuous first and second order derivatives yielding well-behaved approximations. As shown in FIG. 2, the input signal envelope |u(n−1)| is divided into B intervals or “bins”, and the borders between the bins are denoted as “knots” q0, q1, . . . , qK. In between each pair of knots, the basis function ψ(|u(n−1)|) is approximated by a cubic spline that is forced by construction to be continuous at the knots. The knot positions may be distributed uniformly to reduce computational complexity.
When the signal envelope |u(n−1)| falls within the “p-th” bin as shown in FIG. 2, then the basis function ψ(|u(n−1)|) may be approximated by fitting a cubic spline to the four knots surrounding that bin using the corresponding ordinates {Q(p−1),Qp Q(p+1), Q(p+2)}, which must be estimated for a particular PA. Based on the formulation of a Hammerstein pre-distorter model, the above cubic spline approximation is incorporated for the required non-linearity into the DPD actuator model given by Equations 3, where w(m) denotes a set of complex-valued tap weights, M is the basis of the Catmull-Rom spline, and the abscissa {q(p−1),q(p), q(p+1), q(p+2)} for the knot points are assumed to be uniformly distributed.
                                          y            ⁡                          (                              n                -                m                            )                                =                                    ∑                              m                =                0                                            M                -                1                                      ⁢                                          w                ⁡                                  (                  m                  )                                            ·                                                T                  p                                ⁡                                  (                                                                                u                      ⁡                                              (                                                  n                          -                          m                                                )                                                                                                  )                                            ·              M              ·                              Q                p                                                    ⁢                                  ⁢                                            T              p                        ⁡                          (              u              )                                =                      [                                          u                3                            ,                              u                2                            ,              u              ,              1                        ]                          ⁢                                  ⁢                  M          =                                    1              2                        ⁡                          [                                                                                          -                      1                                                                            3                                                                              -                      3                                                                            1                                                                                        2                                                                              -                      5                                                                            4                                                                              -                      1                                                                                                                                  -                      1                                                                            0                                                        1                                                        0                                                                                        0                                                        2                                                        0                                                        0                                                              ]                                      ⁢                                  ⁢                              Q            p                    =                                    [                                                Q                                      p                    -                    1                                                  ,                                  Q                  p                                ,                                  Q                                      p                    +                    1                                                  ,                                  Q                                      p                    +                    2                                                              ]                        T                                              Equations        ⁢                                  ⁢        3            
Other choices for the cubic spline may be used, although the schemes that result are very similar. For example, Equation 4 provides the DPD actuator operation for a single-band actuator based on a second version of cubic splines, where {α(j,m)} and {β(p,m)} represent the complex-valued tap weights for the actuator. Note that separate cubic spline fitting is done for each memory term supported by the actuator.
                              y          ⁡                      (            n            )                          =                                            ∑                              m                =                0                                            M                -                1                                      ⁢                                          u                ⁡                                  (                                      n                    -                    m                                    )                                            ·                                                ∑                                      j                    =                    1                                                                              K                      m                                        -                    1                                                  ⁢                                                      α                    ⁡                                          (                                              j                        ,                        m                                            )                                                        ·                                                                                                                                                                                          u                            ⁡                                                          (                                                              n                                -                                m                                                            )                                                                                                                                -                                                  k                          j                                                                                                            3                                                                                +                                    ∑                              p                =                0                            3                        ⁢                                          β                ⁡                                  (                                      p                    ,                    m                                    )                                            ·                                                                                      u                    ⁡                                          (                                              n                        -                        m                                            )                                                                                        p                                                                        Equation        ⁢                                  ⁢        4            
Often spline-based DPD schemes are implemented using lookup tables (LUTs) to reduce complexity, rather than computing explicitly the cubic terms in Equation 3 or Equation 4 based on the four knots for a particular bin. Instead, the dynamic range for the abscissa of the p-th bin shown in FIG. 2 may be quantized to a finite fixed-point resolution and the cubic spline computations may be pre-computed a-priori for each possible quantized signal envelope value and stored in a LUT. The LUT provides a cheap hardware mechanism to implement the DPD actuator, but complicates the fast adaptation of the tap weights since every time the tap weights need to be updated, the entire contents of the LUTs must be re-computed.
The single-band DPD schemes based on cubic splines may be extended to support concurrent dual-band operation by synthesizing 1D splines independently for each band and then extending them to 2D via a tensor product of the 1D cubic spline interpolations in each band. One example of this approach is to produce a 2D-DPD scheme based on cubic splines and implemented using lookup tables (LUTs). Equation 5 shows the resultant tensor product of the 1D cubic splines, where xL and xU represent the baseband input signals of each band, u denotes the 1D knot index for the signal amplitude of the lower band, and v denotes the 1D knot index for the signal amplitude of the upper band. The expression in Equation 5 would be evaluated at each memory term supported by the actuator.
                              S                      u            ,            v                          =                              ∑                          i              =              0                        3                    ⁢                                    ∑                              j                =                0                            3                        ⁢                                          a                                  i                  ,                  j                                            ·                              [                                                                            (                                                                                                                                                              x                              L                                                                                                            2                                                -                                                                                                                                        x                              u                                                                                                            2                                                                    )                                        i                                    ·                                                            (                                                                                                                                                              x                              U                                                                                                            2                                                -                                                                                                                                        x                              v                                                                                                            2                                                                    )                                        j                                                  ]                                                                        Equation        ⁢                                  ⁢        5            
Clearly, from Equation 5, extending the cubic spline pre-distorter equations from single-band to dual band results in a significant increase in computational complexity due to the squaring of the terms involved in the distortion products; a 1D cubic spline with 3rd order terms results in 6th order terms to be computed when a 2D cubic spline is formed as a tensor product of 1D cubic splines.
Dual-band DPD such as 2D-DPD based on GMPs admit the use of a wide variety of tap weight adaptation and tracking schemes because their outputs are expressed as a linear function of their tap weights. However, a number of significant drawbacks exist. For example:                All orders of non-linear distortion products must be included explicitly in the model a-priori. Consequently, the DPD must be provisioned to compute the worst-case maximum non-linear order expected over a wide variety of PA's. This increases computational complexity significantly, especially if the DPD solution is to be flexible and robust over a wide variety of PA topologies.        Computation of the high order polynomial terms required for 2D-DPD cannot be done simply and accurately in fixed-point with limited precision. Often, complicated hardware schemes based on logarithmic shifts are required to manage the dynamic range issues associated with GMP formulations.        The 2D-DPD actuator in Equation 2 exhibits high complexity, a lack of flexibility in supporting time-skewed distortion products, and the need to extract PA-specific “envelope coupling factors” via a model extraction procedure that requires tens of matrix inversion operations that are difficult to implement efficiently in hardware. Low-complexity variants exist, but they retain the same drawbacks as outlined above.        
Cubic splines can address issues with high order non-linearity and the fixed-point dynamic range issues found in GMP-based schemes but they also suffer from serious drawbacks when used to implement concurrent dual-band pre-distortion:                When implemented directly in hardware, the computational complexity of 2D distortion products based on a tensor product of 1D cubic-splines becomes prohibitive for the dual-band case, where 3rd order polynomials expand to polynomial expressions of 6th order with tens of terms to be evaluated.        When implemented indirectly via LUTs, the increased computational burden of the 2D cubic splines is avoided but the depth of the tables becomes infeasible to implement with sufficient resolution. For example, assuming the table input may be quantized to 12 bits for sufficient performance, a dual-band distortion product comprised of a 2D index of 12+12=24 bits implies a LUT depth of greater than 16 Mega-words for only a single bin.        Adaptation of a LUT-based cubic spline scheme becomes increasingly prohibitive as well, due to the squaring in the size of the LUT contents that must be recomputed when the tap weights are updated in real time by a suitable closed-loop procedure.        Due to the Gaussian nature of constituent wideband signals, a dual-band LTE signal exhibits a strong concentration of its joint envelope in the bottom left corner of the 2D signal envelope plane. Consequently, dual-band DPD schemes based on conventional cubic splines perform poorly as those schemes do not properly account for this concentration of the signal envelope in their formulation.        
Conventional DPD systems commonly employ either “indirect learning” or “direct learning” architectures for tap weight adaptation. Most often, only one of the learning architectures is suitable for any given system based on the nature of the PA nonlinearity or its chosen adaptation scheme. Both architectures form particular embodiments of the classical “inverse or self-tuning control” problem. Consequently, the Tap Weight Evaluation block 26 in FIG. 1 typically adopts one of these architectures but not both.
The indirect learning architecture, shown in FIG. 3, acts fundamentally to “post-distort” the PA output {tilde over (z)}o(t) by passing its baseband equivalent r(n) through a “reverse” DPD actuator model 28. The tap weights of the reverse DPD actuator model 28 are updated or tuned by tap weight updater 30 to drive to zero the error signal e(n) between an y(n) of a DPD actuator 32 and the output of the reverse DPD actuator model 28. The tap weights of the reverse DPD actuator model 28 may then be transferred for use in the forward DPD actuator 32.
The direct learning architecture, shown in FIG. 4, acts fundamentally to “pre-distort” the PA in the “forward” direction by using the baseband actuator input u(n) as the ideal reference signal for tap adaptation, and tuning to zero the error signal e(n) formed between this ideal reference and the observed r(n) from the PA output. Thus, r(n), the baseband equivalent of {tilde over (z)}o(t) is received by a DPD actuator model 29 which receives u(n) and presents an output to the tap weight updater 31. The tap weight updater 31 receives an error signal e(n) which is the difference between r(n) and u(n). The weights are applied to the DPD actuator 33 which produces the pre-distorted signal y(n). Note that although the DPD actuator model 29 is shown explicitly in FIG. 4 for clarity, in principle its function can be absorbed into the actual DPD actuator 33. More sophisticated “direct learning” architectures incorporate explicit PA model identification with inner & outer control loops as required for general “self-tuning inverse control” systems.